Skip to content

feat: gdb read write splitting#1243

Merged
karenc-bq merged 3 commits into
mainfrom
feat/gdb-rw
Jun 11, 2026
Merged

feat: gdb read write splitting#1243
karenc-bq merged 3 commits into
mainfrom
feat/gdb-rw

Conversation

@karenc-bq

@karenc-bq karenc-bq commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

Description

Implemented GDB RW Splitting support.
Also included several changes:

  • fixed the ELB regex pattern. It was using the wrong named parameter group syntax
  • added prepare_host logic, this ensures RDSUtils can still parse the .proxied endpoints used in integration tests
  • added self._stale_dns_helper.notify_host_list_changed(changes) call in the finally block in the failover plugin
  • added the retry_helper logic to wait for RDS API to stabilize during is_db_instance_writer checks

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

@karenc-bq karenc-bq force-pushed the feat/gdb-rw branch 2 times, most recently from d2bf8d8 to 3ccc9b5 Compare June 6, 2026 06:31
@karenc-bq karenc-bq marked this pull request as ready for review June 8, 2026 16:42
Comment thread README.md
| `gdb_rw_home_region` | [GDB Read/Write Splitting Plugin](docs/using-the-python-wrapper/using-plugins/UsingTheGdbReadWriteSplittingPlugin.md) |
| `gdb_rw_restrict_writer_to_home_region` | [GDB Read/Write Splitting Plugin](docs/using-the-python-wrapper/using-plugins/UsingTheGdbReadWriteSplittingPlugin.md) |
| `gdb_rw_restrict_reader_to_home_region` | [GDB Read/Write Splitting Plugin](docs/using-the-python-wrapper/using-plugins/UsingTheGdbReadWriteSplittingPlugin.md) |
| `gdb_enable_global_write_forwarding` | [GDB Read/Write Splitting Plugin](docs/using-the-python-wrapper/using-plugins/UsingTheGdbReadWriteSplittingPlugin.md) |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not necessary for this PR but we should add a ticket to update this - it does not currently list all the properties

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed. I do wonder if there are better formats to present all the parameters than this table though.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed. I like the intention of it. One thing to explore is a decision tree for when to use which - this is particularly useful for global vs rds/aurora now that global has its own versions of many of the parameters

Comment thread aws_advanced_python_wrapper/gdb_read_write_splitting_plugin.py Outdated
Comment thread aws_advanced_python_wrapper/utils/rds_utils.py Outdated
Comment thread aws_advanced_python_wrapper/gdb_read_write_splitting_plugin.py
@karenc-bq karenc-bq merged commit 0a20546 into main Jun 11, 2026
10 of 15 checks passed
@karenc-bq karenc-bq deleted the feat/gdb-rw branch June 11, 2026 17:32
AhmadMasry pushed a commit to AhmadMasry/aws-advanced-python-wrapper that referenced this pull request Jun 14, 2026
AhmadMasry added a commit to AhmadMasry/aws-advanced-python-wrapper that referenced this pull request Jun 14, 2026
…parity)

Async port of GdbReadWriteSplittingPlugin. Adds two override hooks to the async
RWS base -- _select_reader_candidates (reader home-region restriction) and
_should_switch_to_writer (writer home-region restriction / global write
forwarding) -- mirroring sync _get_reader_host_candidates /
_initialize_writer_connection / _set_writer_connection. AsyncGdbReadWriteSplit
tingPlugin resolves the home region from gdb_rw_home_region or the connection
host, keeps readers/writer in-region, and (with GWF enabled) keeps the current
reader connection for a cross-region writer instead of failing. Registered as
gdb_rw in the async plugin factory (weight 320, sync parity) and added to the
topology-requiring set. Adds 10 unit tests; 1954 unit tests pass.

NOTE: this completes the async gdb RWS plugin; the remaining full-parity infra
(dialect flow through AsyncPluginService + AsyncGlobalAuroraTopologyMonitor) is
follow-on work, validatable only against a real Global Database cluster.
AhmadMasry added a commit to AhmadMasry/aws-advanced-python-wrapper that referenced this pull request Jun 14, 2026
The branch already contains all of origin/main's commits (merged earlier in
66fbcd4 and adopted: SQLAlchemy ORM support, gdb RWS aws#1243, initial_connection
default plugins aws#1242, do_ping aws#1245, etc.). The Co-Authored-By trailer rewrite
re-hashed those merged-in main commits, so git's ancestry counter showed the
branch as '11 behind main' even though the content is present (verified).

Use -s ours to re-link origin/main as an ancestor without altering the
validated, integration-tested tree -- a content merge would instead re-add
files we intentionally dropped (mysql_orm_dialect.py replaced by our
sqlalchemy_dialects/) and re-surface already-resolved conflicts.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants